#ifndef BIGNUM_HEADER
#define BIGNUM_HEADER

#include "BigInt.h"


typedef struct
{
	BigInt Top;
	BigInt Bottom;
}BigNum;

void BigNum_Reduce(BigNum Result);										//TODO
char *BigNum_GetAsString(BigNum BigNum);					//TODO

BigNum BigNum_Create();
void BigNum_Destroy(BigNum BigNum);
void BigNum_SetFromInt(BigNum BigNum, int Value);
void BigNum_SetFromLong(BigNum BigNum, long Value);
void BigNum_SetFromString(BigNum BigNum, char *Value);
void BigNum_SetTopFromInt(BigNum BigNum, int Value);
void BigNum_SetTopFromLong(BigNum BigNum, long Value);
void BigNum_SetTopFromString(BigNum BigNum, char *Value);
void BigNum_SetBottomFromInt(BigNum BigNum, int Value);
void BigNum_SetBottomFromLong(BigNum BigNum, long Value);
void BigNum_SetBottomFromString(BigNum BigNum, char *Value);
void BigNum_Add(BigNum Result, BigNum Number0, BigNum Number1);
void BigNum_Sub(BigNum Result, BigNum Number0, BigNum Number1);
void BigNum_Mul(BigNum Result, BigNum Number0, BigNum Number1);
void BigNum_Div(BigNum Result, BigNum Number0, BigNum Number1);
void BigNum_SetFromFloat(BigNum BigNum, float Value);
void BigNum_SetFromDouble(BigNum BigNum, double Value);

#endif